<?php
/**
 * LICENSE
 *
 * This source file is subject to the new BSD license that is bundled with this
 * package in the file LICENSE.txt. It is also available through the
 * world-wide-web at this URL: http://dragonjsonserver.de/license. If you did
 * not receive a copy of the license and are unable to obtain it through the
 * world-wide-web, please send an email to license@dragonjsonserver.de. So we
 * can send you a copy immediately.
 *
 * @copyright Copyright (c) 2012 DragonProjects (http://dragonprojects.de)
 * @license http://framework.zend.com/license/new-bsd New BSD License
 * @author Christoph Herrmann <developer@dragonjsonserver.de>
 */
?>
<h3>Version 1.8.0</h3>
<h4>Releasedatum: 08.11.2012</h4>
<h4>Geänderte Pakete</h4>
<ul>
    <li>
        Dragon
        <ul>
            <li>
                Json
                <ul>
                    <li>Mapping von Responseparametern eingebaut sodass der Client eine Map mitsenden kann durch welche alle angegebenen Responseparameter zusätzlich unter dem gewünschten Alias ausgegeben werden. Dies ist vor allem für Multirequests sinnvoll wenn in der Response eine "id" vorhanden ist und der nachfolgende Request eine "account_id" erwartet</li>
                </ul>
            </li>
        </ul>
    </li>
    <li>
        DragonX
        <ul>
            <li>
                Application
                <ul>
                    <li>Attribute in Arrays von Eigenschaftsklassen können nun auch mit "_" angesprochen werden. Daher statt "$record-&gt;array['key']" funktioniert nun auch "$record-&gt;array_key"</li>
                    <li>"toArray()" der Eigenschaftklassen bietet nun die Möglichkeit an die Arraystruktur auf eine flache Struktur aufzulösen</li>
                    <li>Es ist nun möglich die Arraystrukturen in den Eigenschaftsklassen beliebig tief zu verschachteln</li>
                </ul>
            </li>
            <li>
                Storage
                <ul>
                    <li>Nutzung der "toArray()" Methode zur Auflösung der Arraystrukturen von Records in flache Strukturen zur Speicherung in der Datenbank</li>
                    <li>Install Plugins wurden umgebaut sodass nun nicht mehr alle SQL Statements gesammelt werden sondern die Install Plugins bekommen die Storage Engine der Datenbank übergeben und führen ihre Aktionen direkt aus. Durch diese Vorgehensweise können nun die einzelnen Plugins als Transaktionen installiert/geupdated und deren Version gespeichert werden. Bei Fehlern wird das Plugin nicht installiert/geupdated und der Vorgang kann nach der Behebung des Fehlers erneut gestartet werden ohne manuell Anpassungen vornehmen zu müssen</li>
                </ul>
            </li>
        </ul>
    </li>
</ul>
<h4>Allgemein</h4>
<ul>
    <li>Alle Spalten, Attribut- und Variablennamen die eine eindeutige ID als Wert beinhalten haben als Suffix nun "_id" statt nur "id"</li>
    <li>Alle Install Plugins wurden auf die neue Struktur angepasst. Des Weiteren gibt es nun nicht mehr ein Install Plugin pro Paket sondern Eines pro Tabelle</li>
    <li>BASEURL wird nun zusätzlich mit dem Verzeichnis belegt in welchem sich das Script beim Aufruf befindet. Dadurch ist es möglich das Projekt in ein Unterverzeichnis der Domain/Subdomain zu legen</li>
    <li>Es ist nun möglich die Nutzung des Application Repositories per ".htaccess" zu deaktivieren. Dadurch kann der Inhalt der DragonJsonServer Homepage angezeigt werden auch wenn ein Application Repsoritory vorhanden ist</li>
    <li>Die Projekteigene "/bootstrap.php" besitzt nun die Möglichkeit die Umgebung zu setzen. Wird diese nicht gesetzt greift der Standardmechanismus der mit der PHP Umgebungsvariable funktioniert</li>
</ul>
<h4>JsonClient</h4>
<ul>
    <li>Es ist nun möglich jedem JsonRequest eine eigene Success Callbackmethode zu übergeben das mit der dazugehörigen Response aufgerufen wird. Dies vereinfacht vor allem das Handling der Responses bei Multirequests</li>
    <li>Einem JsonRequest kann nun auch eine Exception Callbackmethode übergeben werden welche aufgerufen wird wenn der Server eine Exception geworfen hat für diesen Request</li>
</ul>
<h4>DragonJsonClient</h4>
<ul>
    <li>Beim Absenden von Anfragen wird nun eine URI zur Anfrage generiert und angezeigt. Diese URI kann zur Weitergabe genutzt werden und dient zur Vorbelegung des Namensraums, der Methode und der Eingabefelder</li>
</ul>
<h2>Migration vom Branch 1.7</h2>
<div class="alert alert-warning">Achtung: Durch den Umbau der Install Plugins müssen alle Datenbanktabelle gelöscht und die Datenbank neu installiert werden. Da sich die Datenstrukturen nicht verändert haben kann vor der Neuinstallation manuell ein Backup gemacht und nach der Neuinstallation eingespielt werden</div>
<h3>Benötigt</h3>
<ul>
    <li>Die Umstellung der Spalten, Attribut- und Variablennamen die eine eindeutige ID als Wert beinhalten müssen bei darauf basierenden Klassen und auch Clientanfragen angepasst werden. Zum Client hin betrifft dies vor allem die "accountid" die nun "account_id" heisst</li>
    <li>Durch den Umbau der Install Pluginstruktur müssen alle eigenen Install Plugins ebenfalls angepasst und eine Neuinstallation der Datenbank gemacht werden (durch das manuelle Löschen aller Tabellen aller Datenbanken und Aufruf der "/install.php")</li>
</ul>
